home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / ask11c.zip / ASK.ASM next >
Assembly Source File  |  1994-03-08  |  46KB  |  1,225 lines

  1. ;--------------------------------------------------------------------------;
  2. ;  Program:    Ask    .Asm                                                 ;
  3. ;  Purpose:    Ask question in batch file and time out if desired.         ;
  4. ;  Notes:      Compiles under TURBO Assembler, v3.0. Should work on any    ;
  5. ;                 machine running MS-DOS, v2.xx or higher.                 ;
  6. ;  Status:     Released into the public domain. Enjoy! If you use it,      ;
  7. ;                 let me know what you think. You don't have to send       ;
  8. ;                 any money, just comments and suggestions.                ;
  9. ;  Updates:    23-Apr-90, v1.0, GAT                                        ;
  10. ;                 - initial version.                                       ;
  11. ;              13-May-90, GAT                                              ;
  12. ;                 - fixed problem with return code if time-out reached.    ;
  13. ;              08-Jul-90, GAT                                              ;
  14. ;                 - added macros to push/pop registers.                    ;
  15. ;              28-Aug-90, v1.1a, GAT                                       ;
  16. ;                 - put equates and macros in separate files.              ;
  17. ;                 - put common routines in libs.                           ;
  18. ;              12-Oct-91, v1.1b, GAT                                       ;
  19. ;                 - revised include file names.                            ;
  20. ;                 - replaced references to Push_M and Pop_M macros with    ;
  21. ;                    calls to push and pop.                                ;
  22. ;                 - removed local stack: it's not necessary.               ;
  23. ;              03-Jul-93, v1.1c, GAT                                       ;
  24. ;                 - compiled with TASM v3.0.                               ;
  25. ;                 - version number now comes from makefile.                ;
  26. ;                 - specified ??date in lowercase.                         ;
  27. ;--------------------------------------------------------------------------;
  28.  
  29. ;--------------------------------------------------------------------------;
  30. ;  Author:     George A. Theall                                            ;
  31. ;  SnailMail:  TifaWARE                                                    ;
  32. ;              610 South 48th St                                           ;
  33. ;              Philadelphia, PA.  19143                                    ;
  34. ;              U.S.A.                                                      ;
  35. ;  E-Mail:     george@tifaware.com                                         ;
  36. ;              theall@popmail.tju.edu                                      ;
  37. ;              theall@mcneil.sas.upenn.edu                                 ;
  38. ;              george.theall@satalink.com                                  ;
  39. ;--------------------------------------------------------------------------;
  40.  
  41. ;--------------------------------------------------------------------------;
  42. ;                          D I R E C T I V E S                             ;
  43. ;--------------------------------------------------------------------------;
  44. DOSSEG
  45. MODEL                tiny
  46.  
  47. IDEAL
  48. LOCALS
  49. JUMPS
  50.  
  51. FALSE               EQU       0
  52. TRUE                EQU       NOT FALSE
  53. BELL                EQU       7
  54. BS                  EQU       8
  55. TAB                 EQU       9
  56. CR                  EQU       13
  57. LF                  EQU       10
  58. ESCAPE              EQU       27             ; nb: ESC is a TASM keyword
  59. SPACE               EQU       ' '
  60. KEY_F1              EQU       3bh
  61. KEY_F2              EQU       3ch
  62. KEY_F3              EQU       3dh
  63. KEY_F4              EQU       3eh
  64. KEY_F5              EQU       3fh
  65. KEY_F6              EQU       40h
  66. KEY_F7              EQU       41h
  67. KEY_F8              EQU       42h
  68. KEY_F9              EQU       43h
  69. KEY_F10             EQU       44h
  70. KEY_HOME            EQU       47h
  71. KEY_UP              EQU       48h
  72. KEY_PGUP            EQU       49h
  73. KEY_LEFT            EQU       4bh
  74. KEY_RIGHT           EQU       4dh
  75. KEY_END             EQU       4fh
  76. KEY_DOWN            EQU       50h
  77. KEY_PGDN            EQU       51h
  78. KEY_INS             EQU       52h
  79. KEY_DEL             EQU       53h
  80. KEY_C_F1            EQU       5eh
  81. KEY_C_F2            EQU       5fh
  82. KEY_C_F3            EQU       60h
  83. KEY_C_F4            EQU       61h
  84. KEY_C_F5            EQU       62h
  85. KEY_C_F6            EQU       63h
  86. KEY_C_F7            EQU       64h
  87. KEY_C_F8            EQU       65h
  88. KEY_C_F9            EQU       66h
  89. KEY_C_F10           EQU       67h
  90. KEY_C_LEFT          EQU       73h
  91. KEY_C_RIGHT         EQU       74h
  92. KEY_C_END           EQU       75h
  93. KEY_C_PGDN          EQU       76h
  94. KEY_C_HOME          EQU       77h
  95. KEY_C_PGUP          EQU       84h
  96. KEY_F11             EQU       85h
  97. KEY_F12             EQU       86h
  98. KEY_C_F11           EQU       89h
  99. KEY_C_F12           EQU       8ah
  100. @16BIT              EQU       (@Cpu AND 8) EQ 0
  101. @32BIT              EQU       (@Cpu AND 8)
  102. NOWARN RES
  103. MACRO    PUSHA                               ;; Pushs all registers
  104.    IF @Cpu AND 2                             ;;  if for 80186 or better
  105.       pusha                                  ;;   use regular opcode
  106.    ELSE                                      ;;  else
  107.       push ax cx dx bx sp bp si di           ;;   nb: order matters!
  108.                                              ;;   nb: SP is not original!
  109.    ENDIF
  110. ENDM
  111. MACRO    POPA                                ;; Pops all registers
  112.    IF @Cpu AND 2                             ;;  if for 80186 or better
  113.       popa                                   ;;   use regular opcode
  114.    ELSE                                      ;;  else
  115.       pop di si bp bx bx dx cx ax            ;;   nb: order matters!
  116.                                              ;;   nb: don't pop SP!
  117.    ENDIF
  118. ENDM
  119. NOWARN RES
  120. MACRO    ZERO     RegList                    ;; Zeros registers
  121.    IRP      Reg, <RegList>
  122.          xor      Reg, Reg
  123.    ENDM
  124. ENDM
  125.  
  126. DOS                 EQU       21h            ; main MSDOS interrupt
  127. STDIN               EQU       0              ; standard input
  128. STDOUT              EQU       1              ; standard output
  129. STDERR              EQU       2              ; error output
  130. STDAUX              EQU       3              ; COM port
  131. STDPRN              EQU       4              ; printer
  132. TSRMAGIC            EQU       424bh          ; magic number
  133. STRUC     ISR
  134.           Entry     DW        10EBh          ; short jump ahead 16 bytes
  135.           OldISR    DD        ?              ; next ISR in chain
  136.           Sig       DW        TSRMAGIC       ; magic number
  137.           EOIFlag   DB        ?              ; 0 (80) if soft(hard)ware int
  138.           Reset     DW        ?              ; short jump to hardware reset
  139.           Reserved  DB        7 dup (0)
  140. ENDS
  141. STRUC     ISRHOOK
  142.           Vector    DB        ?              ; vector hooked
  143.           Entry     DW        ?              ; offset of TSR entry point
  144. ENDS
  145. STRUC     TSRSIG
  146.           Company   DB        8 dup (" ")    ; blank-padded company name
  147.           Product   DB        8 dup (" ")    ; blank-padded product name
  148.           Desc      DB        64 dup (0)     ; ASCIIZ product description
  149. ENDS
  150. GLOBAL at : PROC
  151. GLOBAL errmsg : PROC
  152.    GLOBAL ProgName : BYTE                    ; needed for errmsg()
  153.    GLOBAL EOL : BYTE                         ; ditto
  154. GLOBAL fgetc : PROC
  155. GLOBAL fputc : PROC
  156. GLOBAL fputs : PROC
  157. GLOBAL getchar : PROC
  158. GLOBAL getdate : PROC
  159. GLOBAL getswtch : PROC
  160. GLOBAL gettime : PROC
  161. GLOBAL getvdos : PROC
  162. GLOBAL getvect : PROC
  163. GLOBAL isatty : PROC
  164. GLOBAL kbhit : PROC
  165. GLOBAL pause : PROC
  166. GLOBAL putchar : PROC
  167. GLOBAL setvect : PROC
  168. GLOBAL sleep : PROC
  169. GLOBAL find_NextISR : PROC
  170. GLOBAL find_PrevISR : PROC
  171. GLOBAL hook_ISR : PROC
  172. GLOBAL unhook_ISR : PROC
  173. GLOBAL free_Env : PROC
  174. GLOBAL fake_Env : PROC
  175. GLOBAL check_ifInstalled : PROC
  176. GLOBAL install_TSR : PROC
  177. GLOBAL remove_TSR : PROC
  178.  
  179. GLOBAL atoi : PROC
  180. GLOBAL atou : PROC
  181. GLOBAL utoa : PROC
  182.  
  183. EOS